package com.kaifamiao.exercises.base;

import java.util.Scanner;

// 二进制转换器
public class BinaryConverter {
    public static void main(String[] args) {
        // 创建扫描器
        Scanner s = new Scanner( System.in );
        /* - - - 读取用户输入的整数并判断该整数的符号 - - - */
        System.out.println( "请输入一个整数" );
        // 读取用户输入的整数(遇到空格或换行符即停止读取)
        final int input = s.nextInt();
        // 确定整数的符号(零按照正整数的规则来处理)
        final int sign = input >= 0 ? 1 : -1;

        /* - - - 求取用户所输入整数的绝对值 - - - */
        int t = input >= 0 ? input : -input;

        int[] bits = new int[32];
        for (int i = 0; i < bits.length; i++) {
            System.out.printf("%d", bits[i]);
        }
        System.out.println();

        int index = bits.length - 1;
        /* - - - 根据整数的绝对值确定其原码 - - - */
        while ( t > 0 ){
            int y = t % 2; // 整除2求余数
            bits[ index ] = y ; // 将余数保存到数组指定位置
            index--; // 让数组索引递减(为下次存放二进制位做准备)
            t = t / 2 ; // 整除2求商并赋值
        }

        System.out.print( "绝对值对应的原码:" );
        for (int i = 0; i < bits.length; i++) {
            System.out.printf("%d", bits[i]);
        }
        System.out.println();

        /* - - - 根据整数的符号确定其二进制形式 - - - */
        if( sign == 1 ) {
            System.out.print( input + "的二进制形式是:");
            for (int i = 0; i < bits.length; i++) {
                System.out.printf("%d", bits[i]);
            }
            System.out.println();
        } else {

        }

        // 关闭扫描器
        s.close();
    }
}
